clear; clc; close all;

% 模型参数
a = 0.02;
b = 2.6;
c = 1.1;
d = 0.001;

% 迭代设置
N = 5000;        % 总迭代步数
discard = 800;  % 丢弃暂态步数

% 定义初始条件的取值范围
x_min = -2; x_max = 2;
y_min = -10; y_max = 10;
numPoints = 2000; % 网格分辨率

% 生成网格
[x0_grid, y0_grid] = meshgrid(linspace(x_min, x_max, numPoints), ...
                              linspace(y_min, y_max, numPoints));
% 用来存放吸引子编号（归类结果）
basin = zeros(size(x0_grid));

% 对网格上每个点进行迭代，归类其落入的吸引子
% 这里假设系统存在两个主要吸引子，我们可以设定一个简单的归类准则
% 例如，以迭代后状态 x_final 的正负作为分类依据
for i = 1:numel(x0_grid)
    x = x0_grid(i);
    y = y0_grid(i);
    % 迭代系统
    for k = 1:N
        [x, y] = f1(x, y, a, b, c, d);
    end
    % 简单归类：如果 x_final > 0 归为 1，否则归为 2
    if x > 0
        basin(i) = 1;
    else
        basin(i) = 2;
    end
end

% 绘制吸引域图
figure('Color','w');
imagesc([x_min, x_max], [y_min, y_max], basin);
set(gca, 'YDir', 'normal');
colormap([0.8 0.9 1; 1 0.8 0.8]);  % 为两类吸引子设置柔和色，如蓝色和粉色
colorbar;
xlabel('x(0)', 'FontSize',12);
ylabel('y(0)', 'FontSize',12);
title('Basin of Attraction for MNFM1', 'FontSize',14);
